package org.example.flea_market_mvc.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 购物车
 *
 * @author chensanju
 * @date 2025-06-10 12:50:46
 */
@Data
@TableName("shopping_carts") // 显式指定表名
public class ShoppingCarts {

    /**
     * 购物车项ID，主键自增
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 用户ID，外键关联users表，登录用户使用
     */
    private Integer userId;

    /**
     * 商品ID，外键关联products表
     */
    private Integer productId;

    /**
     * 商品数量
     */
    private Integer quantity;

    /**
     * 加入购物车时间
     */
    @TableField(fill = FieldFill.INSERT) // 插入时自动填充
    private LocalDateTime addTime;

    /**
     * 会话ID，未登录用户使用
     */
    private String sessionId;

    /**
     * 商品名称（冗余字段，避免多次查询商品表）
     */
    private String productName;

    /**
     * 商品单价（冗余字段，记录加入时的价格，避免价格变动影响订单）
     */
    private BigDecimal productPrice;

    /**
     * 商品图片URL（冗余字段，用于购物车展示）
     */
    private String productImage;

    /**
     * 购物车项状态：0-正常，1-已删除（逻辑删除）
     */
    @TableLogic // MyBatis-Plus 逻辑删除注解
    private Integer status;

    /**
     * 失效时间（用于游客购物车自动清理）
     */
    private LocalDateTime expireTime;

    /**
     * 商品小计（quantity * productPrice）
     */
    private BigDecimal subTotal;
}